package com.ng.common.log.dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ng.common.log.entity.WebsiteEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * @author cb
 * @Description TODO
 * @date 2024/1/21
 */

@Mapper
public interface WebsiteDao extends BaseMapper<WebsiteEntity> {
    /**
     * 查询今天之内 表中是否含有该远程地址
     *
     * @param remoteAddr IP地址
     * @param preDate    前一天
     * @param nextDate    后一天
     * @return 影响行数
     */

    List<WebsiteEntity> queryHasRecord(@Param("remoteAddr") String remoteAddr, @Param("preDate")String preDate, @Param("nextDate")String nextDate);

    /**
     * 插入Pv记录
     *
     * @param websiteEntity 参数为pageName和path
     * @return
     */

    int insertPv(WebsiteEntity websiteEntity);

    /**
     * 插入Uv记录
     *
     * @param websiteEntity 参数为pageName和path
     * @return
     */

    int insertUv(WebsiteEntity websiteEntity);

    /**
     * 插入Ip记录
     *
     * @param websiteEntity 参数为pageName和path
     * @return
     */

    int insertIp(WebsiteEntity websiteEntity);

    /**
     * 获得各个类型的记录总数
     * @return
     */

    List<Map> getNumGroupByType();

    /**
     * 根据时间和类型  获取记录数
     * @return
     */

    List<Map> getWebSiteNumByDateAndType(@Param("date") String date);

    /**
     * 报表统计
     * 根据时间和type分组,限定起始时间
     * @param fromDate
     * @param toDate
     * @return
     */

    List<Map> reportForm(@Param("fromDate") String fromDate,@Param("toDate") String toDate);

    /**
     * 获取相应日期的报表统计
     * @param date
     * @return
     */

    List<Map>  getReportFormByDate(@Param("date") String date);



    List<Map> top10SearchWord();
}
